﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel;
using Airport.AirportDataTypes;

namespace Airport
{
    public interface IAirportCallback
    {
        [OperationContract(IsOneWay = true)]
        void IncomingCurrentPlaneList(List<Plane> planeList);

        // Notifies all listeners that a new flight has been added
        [OperationContract(IsOneWay = true)]
        void newFlightUpdate(Flight newFlight);

        // Notifies all listeners that a plane position has changed
        [OperationContract(IsOneWay = true)]
        void PlanePositionUpdate(int planeId, Node newLocation);

        [OperationContract(IsOneWay = true)]
        void UpdatePlane(Plane updatedPlane);

        [OperationContract(IsOneWay = true)]
        void AddNewPotentialIncursion(Incursion incursion);

        [OperationContract(IsOneWay = true)]
        void RemovePotentialIncursion(Incursion incursion);

        [OperationContract(IsOneWay = true)]
        void IncomingAirportLayout(Map airportMap);

        [OperationContract(IsOneWay = true)]
        void IncomingSuggestion(Route pendingRoute, bool isMitigated);

        [OperationContract(IsOneWay = true)]
        void IncomingScenarioList(List<Scenario> scenarios);

        [OperationContract(IsOneWay = true)]
        void RouteStringVerificationFailed(List<string> routeString);
    }
}